package concurrency.chapter7;

public class SynchronizedRunnable implements Runnable {
    private static final int MAX = 500;
    //static可以实现多个线程访问同一个数据，不会出现重复数据，但生命周期太长
    private static int index = 1;

    @Override
    //同步代码块，锁是this。
    //synchronized加到了run方法上，只有一个线程抢到锁，并执行完，其他2个线程抢锁执行判断时就退出了
    public synchronized void run() {
        System.out.println(Thread.currentThread().getName());
        while (true) {
            if (index > MAX)
                break;
            try {
                Thread.sleep(5);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "的号码是：" + index++);
        }
    }
}
